package com.qfedu.service.impl;

import com.qfedu.dao.AddressDao;
import com.qfedu.dao.OrderDao;
import com.qfedu.dao.impl.AddressDaoImpl;
import com.qfedu.dao.impl.OrderDaoImpl;
import com.qfedu.pojo.Address;
import com.qfedu.service.AddressService;
import com.qfedu.utils.DataSourceUtils;
import com.qfedu.utils.TxUtils;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

/**
 * 创建者: QF-SUN
 * 创建时间: 2023/4/6 9:30
 * 描述:
 */
public class AddressServiceImpl implements AddressService {

    AddressDao addressDao = new AddressDaoImpl();

    OrderDao orderDao = new OrderDaoImpl();

    @Override
    public List<Address> selectAddresses(int userId) {
        return addressDao.selectAddresses(userId);
    }

    @Override
    public void insert(Address address) {
        addressDao.insert(address);
    }

    @Override
    public void deleteById(String id) {
        //判断地址是否被关联， 如果被关联，提示不能够删除
        long count = orderDao.findCountByAddId(id);
        if(count > 0){
            throw new RuntimeException("该地址被关联，不能被删除");
        }
        addressDao.deleteById(id);
    }

    @Override
    public void update(Address address) {
        addressDao.update(address);
    }

    /**
     * 设置默认收获地址
     * 1. 设置用户的所有收货地址不是默认的收货地址（level = 0）
     * 2. 设置某地址为 默认收货地址（level = 1）
     * @param uid
     * @param id
     */
    @Override
    public void setDefaultAddress(int uid, int id) {
        try {
            //开启事务
            TxUtils.begin();

            addressDao.setNotDefault(uid);

            addressDao.setDefault(id);

            //提交事务
            TxUtils.commit();
        } catch (Exception e) {
            e.printStackTrace();
            //回滚事务
            TxUtils.rollback();

        } finally {
            TxUtils.close();
        }
    }
}
